package com.holyn.guofang.model.webhttp.observable;

import com.holyn.guofang.model.webhttp.wo.OrderItemWo;
import com.holyn.guofang.model.webhttp.wo.StatusWo;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
 * Created by Holyn on 2017/8/29.
 */

public interface OrderObservable {

    /**
     * 2.6.1 获取订单信息
     *
     * @param from 下订单开始日期，格式:年-月-日，空字符串时为不 限
     * @param to 下订单结束日期，格式:年-月-日，空字符串时为不 限
     * @param payStatus 支付状态(0:未支付，1:已支付，其余不判断该 条件)
     * @param orderType 订单类型(-1:国方卡订单，1:含主卡订单，2:仅 有附属卡订单，3:商标事宜在线委托需订单，4:商 标注册申请，其余不判断该条件)
     * @param pageSize 每页返回记录数，传的数为非正数时返回所有记录
     * @param page 页码，传的数为非正数时返回所有记录
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("orderList.ashx")
    Observable<OrderItemWo> orderList(
            @Field("from") String from,
            @Field("to") String to,
            @Field("payStatus") Integer payStatus,
            @Field("orderType") Integer orderType,
            @Field("pageSize") Integer pageSize,
            @Field("page") Integer page
    );

    /**
     * 2.6.2 删除订单, 若订单选择线下支付且已确认线下支付，或订单支付状态为已支付，则订单不能删 除。
     *
     * @param id 订单 ID
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("deleteOrder.ashx")
    Observable<StatusWo> deleteOrder(@Field("id") Integer id);

    /**
     * 2.6.3 更改订单离线支付状态, 更改订单离线支付状态，该接口并不更改订单的实际支付状态。
     *
     * @param id 订单 ID
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("updateOfflinePayStatus.ashx")
    Observable<StatusWo> updateOfflinePayStatus(@Field("id") Integer id);

    /**
     * 2.6.4 更改订单支付状态(只用于手机端)
     *
     * @param id 订单 ID
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("updateOrderPayStatus.ashx")
    Observable<StatusWo> updateOrderPayStatus(@Field("id") Integer id);
}
